<html>
<body>
Reports any variables which may be declared with a weaker type. For instance,
a variable may be of type <tt>ArrayList</tt>, and only the method
<tt>isEmpty()</tt> is called on it. In this case the type
<tt>List</tt> would do just as well.
<!-- tooltip end -->
<p>
Enable the <b>Use righthand type</b> checkbox below
to prevent weakening the left side of assignments when the right side is not
a type cast or new expression. When storing the result of a method call in a variable, it is
useful to retain the type of the method call result instead of unnecessarily weakening it.
<p>
Enable the <b>Use parameterized type</b> checkbox below
to use the parameterized type of the collection as weakest type when
the object evaluated is used as an argument to a collection method with a parameter type of
<tt>java.lang.Object</tt>.
Use this option to prevent weakening to <tt>Object</tt> when passing an object to the collection methods
<tt>get()</tt>, <tt>remove()</tt>,
<tt>contains()</tt>, <tt>indexOf()</tt>,
<tt>lastIndexOf()</tt>, <tt>containsKey()</tt> and <tt>containsValue()</tt>.
<p>
Enable the <b>Do not weaken to Object</b> checkbox below
to specify whether a type should be weakened to <tt>java.lang.Object</tt>.
Weakening to <tt>java.lang.Object</tt> is often not very useful.
<p>
Enable the <b>Only weaken to an interface</b> checkbox below
to only report when the type can be weakened to an interface type.
<p>
Enable the <b>Do not weaken return type</b> checkbox below
to prevent reporting when return type may be weakened.
Only variables will be analyzed.
<p>
<b>Stop classes</b> are intended to prevent weakening to classes
lower than stop classes, even if it would be possible.
In some cases this may improve readability.
</body>
</html>
